package com.ikun.aimian.service;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.ikun.aimian.model.dto.appcomment.AppCommentQueryRequest;
import com.ikun.aimian.model.entity.AppComment;
import com.ikun.aimian.model.vo.AppCommentVO;

import javax.servlet.http.HttpServletRequest;

public interface AppCommentService extends IService<AppComment> {

    /**
     * 校验评论数据
     *
     * @param comment 评论实体
     * @param add     是否为新增操作
     */
    void validComment(AppComment comment, boolean add);

    /**
     * 根据 AppCommentQueryRequest 构造查询条件
     *
     * @param queryRequest 评论查询请求
     * @return QueryWrapper
     */
    QueryWrapper<AppComment> getQueryWrapper(AppCommentQueryRequest queryRequest);

    /**
     * 将 AppComment 转换为 AppCommentVO，并补充用户信息
     *
     * @param comment 评论实体
     * @param request HTTP 请求
     * @return AppCommentVO
     */
    AppCommentVO getCommentVO(AppComment comment, HttpServletRequest request);

    /**
     * 分页获取评论封装对象
     *
     * @param commentPage 评论分页对象
     * @param request     HTTP 请求
     * @return 分页后的 AppCommentVO
     */
    Page<AppCommentVO> getCommentVOPage(Page<AppComment> commentPage, HttpServletRequest request);
}
